<?php
/**
 * 文件组件
 *
 * @author seraph.liujb 2009.7.20
 */

class Common_File
{

	/**
	 * __construct
	 *
	 */
	public function __construct()
	{}

	/**
	 * factory
	 *
	 * @param string $adapterName Abstract Img Doc
	 * @return Common_File_Abstract|Common_File_Image
	 */
	static public function factory($adapterName = 'Abstract', $params = array())
	{
		/* @todo 按$adapterName的值，取得ini中的相应配置，以备后用 */

		//生成指定组件类名
		$adapterName = 'Common_File_' . $adapterName;
		//实例化引擎类
		$adapter = new $adapterName($params);
		//校验组件实例有效性
		if (! $adapter instanceof  Common_File_Abstract) {
			throw new Exception('无效的检索引擎：' . $adapterName,0);
		}
		 
		return $adapter;
	}

	/* @todo 该方法为保持向前兼容性而保留 */
	/**
	 * 校验与自动生成指定文件路径，根路径默认存在、有权、可写
	 *
	 * @param string $dir_path 需校验的目录
	 * @param string $sub_path 下级子目录，如为空，则递归结束
	 * @return boolean
	 */
	static public function checkUploadDir($dir_path, $sub_path = '')
	{
		//    echo "C:".$sub_path;echo "<br>";
		if (!is_dir($dir_path))    {
			self::checkUploadDir(dirname($dir_path),$dir_path);
		}
		//    echo "M:";echo $sub_path;echo "<br>";
		if ($sub_path!="") {
			return mkdir($sub_path,0777);
		}
		return true;
	}

}
